Como se sabe simplemente siguiendo las noticias, la ciudad de Chicago es una de las mas criminalizadas de los Estados Unidos y, por tanto, del mundo. Por conocimiento popular, se asume desde hace mucho tiempo que la mayoria de crímenes violentos se concentran en los barrios del sur, casualmente los mas pobres de toda la ciudad. En este análisis se busca confirmar esa teoría o si en cambio, la distribución de crímenes es mas homogénea por la ciudad de lo que se piensa.
Los datos se leen desde BigQuery en Google Cloud Platform Yo he leido los datos y guardado en un .csv con el script que hay en esta misma carpeta llamado AdquisicionDeDatos.R Hay que mencionar que la tabla original contiene mas de 3 millones de filas de todos los años. Se seleccionan los últimos 5 años para poder hacer el procesamiento bien sin que la carga sobre el ordenador llegue al límite.
Una segunda tabla de datos llamada PoliceDistricts.csv se usa para obtener las localizaciones de los diferentes distritos, necesario para algunos análisis.
Lo primero es leer los datos e importar las librerias y hacer una exploracion inicial con “Summary” y “Head”
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(data.table)
##
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
##
## between, first, last
library(DataExplorer)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.2 ✓ purrr 0.3.4
## ✓ tibble 3.0.3 ✓ stringr 1.4.0
## ✓ tidyr 1.1.2 ✓ forcats 0.5.0
## ✓ readr 1.3.1
## ── Conflicts ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## x data.table::between() masks dplyr::between()
## x dplyr::filter() masks stats::filter()
## x data.table::first() masks dplyr::first()
## x dplyr::lag() masks stats::lag()
## x data.table::last() masks dplyr::last()
## x purrr::transpose() masks data.table::transpose()
library(sqldf)
## Loading required package: gsubfn
## Loading required package: proto
## Warning in doTryCatch(return(expr), name, parentenv, handler): unable to load shared object '/Library/Frameworks/R.framework/Resources/modules//R_X11.so':
## dlopen(/Library/Frameworks/R.framework/Resources/modules//R_X11.so, 6): Library not loaded: /opt/X11/lib/libSM.6.dylib
## Referenced from: /Library/Frameworks/R.framework/Versions/4.0/Resources/modules/R_X11.so
## Reason: image not found
## Warning in system2("/usr/bin/otool", c("-L", shQuote(DSO)), stdout = TRUE):
## running command ''/usr/bin/otool' -L '/Library/Frameworks/R.framework/Resources/
## library/tcltk/libs//tcltk.so'' had status 1
## Could not load tcltk. Will use slower R code instead.
## Loading required package: RSQLite
library("leaflet")
library("data.table")
library("sp")
library("rgdal")
## rgdal: version: 1.5-18, (SVN revision 1082)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 3.1.1, released 2020/06/22
## Path to GDAL shared files: /Library/Frameworks/R.framework/Versions/4.0/Resources/library/rgdal/gdal
## GDAL binary built with GEOS: TRUE
## Loaded PROJ runtime: Rel. 6.3.1, February 10th, 2020, [PJ_VERSION: 631]
## Path to PROJ shared files: /Library/Frameworks/R.framework/Versions/4.0/Resources/library/rgdal/proj
## Linking to sp version:1.4-4
## To mute warnings of possible GDAL/OSR exportToProj4() degradation,
## use options("rgdal_show_exportToProj4_warnings"="none") before loading rgdal.
library("KernSmooth")
## KernSmooth 2.23 loaded
## Copyright M. P. Wand 1997-2009
library(ggmap)
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
library(kableExtra)
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
library(leaflet)
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggmap':
##
## wind
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(tidyverse)
library(RColorBrewer)
library(ggplot2)
library(viridis)
## Loading required package: viridisLite
library(magrittr)
##
## Attaching package: 'magrittr'
## The following object is masked from 'package:ggmap':
##
## inset
## The following object is masked from 'package:purrr':
##
## set_names
## The following object is masked from 'package:tidyr':
##
## extract
library(tidyr)
chicago_crime <- read.table(file = "Datos/ChicagoCrime_5years.csv", #Name of text file.
sep = ",", #Separation character.
header = TRUE, #If column names are in the first row.
na.strings = "NA", #Character to be marked as missing value.
stringsAsFactors = FALSE)
police_districts <- read.table(file = "Datos/Police_Stations.csv", #Name of text file.
sep = ",", #Separation character.
header = TRUE, #If column names are in the first row.
na.strings = "NA", #Character to be marked as missing value.
stringsAsFactors = FALSE)
summary(chicago_crime)
## unique_key block primary_type description
## Min. : 21714 Length:1116351 Length:1116351 Length:1116351
## 1st Qu.:10486022 Class :character Class :character Class :character
## Median :11009594 Mode :character Mode :character Mode :character
## Mean :10947551
## 3rd Qu.:11460320
## Max. :12202211
##
## location_description district date arrest
## Length:1116351 Min. : 1.00 Length:1116351 Mode :logical
## Class :character 1st Qu.: 6.00 Class :character FALSE:869959
## Mode :character Median :11.00 Mode :character TRUE :246392
## Mean :11.37
## 3rd Qu.:17.00
## Max. :31.00
## NA's :1
## year latitude longitude
## Min. :2015 Min. :36.62 Min. :-91.69
## 1st Qu.:2016 1st Qu.:41.77 1st Qu.:-87.71
## Median :2017 Median :41.87 Median :-87.66
## Mean :2017 Mean :41.85 Mean :-87.67
## 3rd Qu.:2018 3rd Qu.:41.91 3rd Qu.:-87.63
## Max. :2019 Max. :42.02 Max. :-87.53
## NA's :17205 NA's :17205
head(chicago_crime)
## unique_key block primary_type
## 1 11695410 053XX N LOWELL AVE CRIMINAL TRESPASS
## 2 11698581 052XX N HARLEM AVE DECEPTIVE PRACTICE
## 3 11698203 130XX S AVENUE O OTHER OFFENSE
## 4 11710618 077XX W THORNDALE AVE DECEPTIVE PRACTICE
## 5 11697260 045XX S KARLOV AVE OBSCENITY
## 6 11721567 111XX S TRUMBULL AVE OTHER OFFENSE
## description location_description district
## 1 TO VEHICLE STREET 17
## 2 COUNTERFEIT CHECK COMMERCIAL / BUSINESS OFFICE 16
## 3 VEHICLE TITLE/REG OFFENSE STREET 4
## 4 FINANCIAL IDENTITY THEFT OVER $ 300 RESIDENCE 16
## 5 OBSCENE MATTER RESIDENCE 8
## 6 OTHER CRIME INVOLVING PROPERTY RESIDENCE 22
## date arrest year latitude longitude
## 1 2019-05-22 01:37:00 FALSE 2019 41.97952 -87.73774
## 2 2019-05-07 09:00:00 FALSE 2019 41.97581 -87.80705
## 3 2019-05-24 12:15:00 FALSE 2019 41.65868 -87.53988
## 4 2019-05-17 13:08:00 FALSE 2019 41.98671 -87.82118
## 5 2019-05-21 00:00:00 TRUE 2019 41.81058 -87.72614
## 6 2019-06-05 20:00:00 FALSE 2019 41.69039 -87.70688
summary(police_districts)
## DISTRICT DISTRICT.NAME ADDRESS CITY
## Length:23 Length:23 Length:23 Length:23
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## STATE ZIP WEBSITE PHONE
## Length:23 Min. :60608 Length:23 Length:23
## Class :character 1st Qu.:60614 Class :character Class :character
## Mode :character Median :60626 Mode :character Mode :character
## Mean :60626
## 3rd Qu.:60636
## Max. :60653
## FAX TTY X.COORDINATE Y.COORDINATE
## Length:23 Length:23 Min. :1138149 Min. :1830851
## Class :character Class :character 1st Qu.:1154910 1st Qu.:1862839
## Mode :character Mode :character Median :1167659 Median :1891772
## Mean :1164579 Mean :1889116
## 3rd Qu.:1174074 3rd Qu.:1913962
## Max. :1193131 Max. :1943199
## LATITUDE LONGITUDE LOCATION
## Min. :41.69 Min. :-87.77 Length:23
## 1st Qu.:41.78 1st Qu.:-87.71 Class :character
## Median :41.86 Median :-87.66 Mode :character
## Mean :41.85 Mean :-87.67
## 3rd Qu.:41.92 3rd Qu.:-87.64
## Max. :42.00 Max. :-87.57
head(police_districts)
## DISTRICT DISTRICT.NAME ADDRESS CITY STATE ZIP
## 1 1 Central 1718 S State St Chicago IL 60616
## 2 6 Gresham 7808 S Halsted St Chicago IL 60620
## 3 11 Harrison 3151 W Harrison St Chicago IL 60612
## 4 16 Jefferson Park 5151 N Milwaukee Ave Chicago IL 60630
## 5 Headquarters Headquarters 3510 S Michigan Ave Chicago IL 60653
## 6 24 Rogers Park 6464 N Clark St Chicago IL 60626
## WEBSITE
## 1 http://home.chicagopolice.org/community/districts/1st-district-central/
## 2 http://home.chicagopolice.org/community/districts/6th-district-gresham/
## 3 http://home.chicagopolice.org/community/districts/11th-district-harrison/
## 4 http://home.chicagopolice.org/community/districts/16th-district-jefferson-park/
## 5 http://home.chicagopolice.org
## 6 http://home.chicagopolice.org/community/districts/24th-district-rogers-park/
## PHONE FAX TTY X.COORDINATE Y.COORDINATE LATITUDE
## 1 312-745-4290 312-745-3694 312-745-3693 1176569 1891772 41.85837
## 2 312-745-3617 312-745-3649 312-745-3639 1172283 1853023 41.75214
## 3 312-746-8386 312-746-4281 312-746-5151 1155244 1897149 41.87358
## 4 312-742-4480 312-742-4421 312-742-4423 1138481 1933660 41.97409
## 5 1177731 1881697 41.83070
## 6 312-744-5907 312-744-6928 312-744-7603 1164194 1943199 41.99976
## LONGITUDE LOCATION
## 1 -87.62736 (41.8583725929, -87.627356171)
## 2 -87.64423 (41.7521368378, -87.6442289066)
## 3 -87.70549 (41.8735822883, -87.705488126)
## 4 -87.76615 (41.9740944511, -87.7661488432)
## 5 -87.62340 (41.8307016873, -87.6233953459)
## 6 -87.67132 (41.9997634842, -87.6713242922)
En la tabla se puede ver variables que podrían ser muy útiles a la hora de ver la distribución crímenes por la ciudad, como puede ser el tipo de crímen, el distrito o si se ha producido arresto o no. Además, obtenemos la localización de cada crimen para poder ponerlo en algún mapa.
Como se observa del apartado anterior, hay muchos caracteres especiales que considero que hay que cambiar a descripciones mas simples. Tambien puede ser de utilidad dividir las fechas en día, mes y año, para poder hacer análisis mas en detalle. Para cambiar las descripciones usamos la funcion gsub() y para dividir las fechas usamos lubridate.
chicago_crime$location_description <- (gsub(","," ",chicago_crime$location_description))
chicago_crime$description <- gsub(":=","",chicago_crime$description)
chicago_crime$description <- gsub(":","",chicago_crime$description)
chicago_crime$description <- gsub("MANU/POSS. W/","",chicago_crime$description)
chicago_crime$description <- gsub(",","",chicago_crime$description)
chicago_crime$location_description <- gsub("(E.G. UBER LYFT)","",chicago_crime$location_description)
chicago_crime$location_description <- gsub(",","",chicago_crime$location_description)
chicago_crime <- chicago_crime %>%
dplyr::mutate(year = lubridate::year(date),
month = lubridate::month(date),
day = lubridate::day(date))
head(chicago_crime)
## unique_key block primary_type
## 1 11695410 053XX N LOWELL AVE CRIMINAL TRESPASS
## 2 11698581 052XX N HARLEM AVE DECEPTIVE PRACTICE
## 3 11698203 130XX S AVENUE O OTHER OFFENSE
## 4 11710618 077XX W THORNDALE AVE DECEPTIVE PRACTICE
## 5 11697260 045XX S KARLOV AVE OBSCENITY
## 6 11721567 111XX S TRUMBULL AVE OTHER OFFENSE
## description location_description district
## 1 TO VEHICLE STREET 17
## 2 COUNTERFEIT CHECK COMMERCIAL / BUSINESS OFFICE 16
## 3 VEHICLE TITLE/REG OFFENSE STREET 4
## 4 FINANCIAL IDENTITY THEFT OVER $ 300 RESIDENCE 16
## 5 OBSCENE MATTER RESIDENCE 8
## 6 OTHER CRIME INVOLVING PROPERTY RESIDENCE 22
## date arrest year latitude longitude month day
## 1 2019-05-22 01:37:00 FALSE 2019 41.97952 -87.73774 5 22
## 2 2019-05-07 09:00:00 FALSE 2019 41.97581 -87.80705 5 7
## 3 2019-05-24 12:15:00 FALSE 2019 41.65868 -87.53988 5 24
## 4 2019-05-17 13:08:00 FALSE 2019 41.98671 -87.82118 5 17
## 5 2019-05-21 00:00:00 TRUE 2019 41.81058 -87.72614 5 21
## 6 2019-06-05 20:00:00 FALSE 2019 41.69039 -87.70688 6 5
Usando la funcion plot_missing() de DataExplorer nos muestra si hay valores nulos en cualquiera de las variables.
plot_missing(chicago_crime)
chicago_crime <- na.omit(chicago_crime)
Como se ve en el gráfico, si que faltan datos. Como son muy pocos sobre el total, no creo que afecten mucho sobre el análisis eliminarlos, por lo que uso na.omit() para eliminar esas filas.
Como hay muchísimos tipos de crimenes, para hecer un análisis suficientemente buen, creo que simplificaría las cosas agrupar todos los posibles crimenes en 8 grupos. Esos grupos son: Assault, Criminal Damage, Deceptive Practice, Narcotics, Robbery, Theft, Violent Crime y Weapons Violation.
Seleccionaremos un subset (chicago_crime_subset) con esos grupos, quedando la reduccion de crimenes como se ilustran en los siguientes histogramas. Comprobando ademas que no faltan datos.
En cuanto a la tabla de distritos policiales, se cambia el distrito “HeadQuarters” por el “0”, para que todos sean numéricos.
chicago_crime$primary_type[chicago_crime$primary_type == "CRIMINAL TRESPASS"] <- "ROBBERY"
chicago_crime$primary_type[chicago_crime$primary_type == "BURGLARY"] <- "ROBBERY"
chicago_crime$primary_type[chicago_crime$primary_type == "MOTOR VEHICLE THEFT"] <- "THEFT"
chicago_crime$primary_type[chicago_crime$primary_type == "HOMICIDE"] <- "VIOLENT CRIME"
chicago_crime$primary_type[chicago_crime$primary_type == "KIDNAPPING"] <- "VIOLENT CRIME"
chicago_crime$primary_type[chicago_crime$primary_type == "BATTERY"] <- "VIOLENT CRIME"
chicago_crime$primary_type[chicago_crime$primary_type == "INTIMIDATION"] <- "VIOLENT CRIME"
chicago_crime$primary_type[chicago_crime$primary_type == "ARSON"] <- "VIOLENT CRIME"
chicago_crime$primary_type[chicago_crime$primary_type == "PROSTITUTION"] <- "SEX OFFENSE"
chicago_crime$primary_type[chicago_crime$primary_type == "CRIM SEXUAL ASSAULT"] <- "SEX OFFENSE"
chicago_crime$primary_type[chicago_crime$primary_type == "OTHER NARCOTIC VIOLATION"] <- "NARCOTICS"
chicago_crime$primary_type <- factor(chicago_crime$primary_type)
chicago_crime$district <- factor(chicago_crime$district)
police_districts$DISTRICT[police_districts$DISTRICT == "Headquarters"] <- "0"
police_districts$DISTRICT <- as.factor(police_districts$DISTRICT)
chicago_crime_subset <- subset(chicago_crime, primary_type=="ASSAULT" | primary_type == "VIOLENT CRIME" | primary_type == "THEFT" | primary_type=="NARCOTICS" | primary_type == "WEAPONS VIOLATION" | primary_type=="ROBBERY" | primary_type == "CRIMINAL DAMAGE" | primary_type == "DECEPTIVE PRACTICE" )
chicago_crime_subset$primary_type <- factor(chicago_crime_subset$primary_type)
chicago_crime_subset$district <- factor(chicago_crime_subset$district)
chicago_crime_subset <- na.omit(chicago_crime_subset)
plot_missing(chicago_crime_subset)
ggplot(data = chicago_crime) +
geom_bar(mapping = aes(x = primary_type)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
ggtitle("Crímenes Originales")
ggplot(data = chicago_crime_subset) +
geom_bar(mapping = aes(x = primary_type)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
ggtitle("Crímenes del Subset")
En el último histograma se muestra la distribución de los crímenes con los que se va a trabajar. Es importante entender la diferencia de cantidad de casos entre los crímenes para el análisis que se va a realizar, ya que las comparaciones, probabilidades y conclusiones pueden acentuarse mas o menos dependiendo en la cantidad de casos de cada crímen.
Comprobando las dimensiones vemos como no hay una gran diferencia en numero de casos sobre el total, por lo que la agrupación es bastante favorable
dim(chicago_crime)
## [1] 1095801 13
dim(chicago_crime_subset)
## [1] 999672 13
Hacemos ahora diferentes subsets de cada crímen para analisis mas en detalle, que puede ser bastante útil. Esto puede ser muy útil para ver en que distritos se producen mas crímenes de un tipo, como se ve en los histogramas generados.
assault <- subset(chicago_crime_subset, primary_type=="ASSAULT")
violent_crime <- subset(chicago_crime_subset, primary_type=="VIOLENT CRIME")
theft <- subset(chicago_crime_subset, primary_type=="THEFT")
narcotics <- subset(chicago_crime_subset, primary_type=="NARCOTICS")
weapons_violation <- subset(chicago_crime_subset, primary_type=="WEAPONS VIOLATION")
robbery <- subset(chicago_crime_subset, primary_type=="ROBBERY")
criminal_damage <- subset(chicago_crime_subset, primary_type=="CRIMINAL DAMAGE")
deceptive_practice <- subset(chicago_crime_subset, primary_type=="DECEPTIVE PRACTICE")
ggplot(data = assault) +
geom_bar(mapping = aes(x = district)) +
theme(axis.text.x = element_text(hjust = 1)) +
ggtitle("ASSAULT BY DISTRICT")
ggplot(data = theft) +
geom_bar(mapping = aes(x = district)) +
theme(axis.text.x = element_text(hjust = 1)) +
ggtitle("THEFTS BY DISTRICT")
ggplot(data = violent_crime) +
geom_bar(mapping = aes(x = district)) +
theme(axis.text.x = element_text(hjust = 1)) +
ggtitle("VIOLENT CRIMES BY DISTRICT")
ggplot(data = narcotics) +
geom_bar(mapping = aes(x = district)) +
theme(axis.text.x = element_text(hjust = 1)) +
ggtitle("NARCOTIC CRIMES BY DISTRICT")
ggplot(data = weapons_violation) +
geom_bar(mapping = aes(x = district)) +
theme(axis.text.x = element_text(hjust = 1)) +
ggtitle("WEAPON-RELATED CRIMES BY DISTRICT")
ggplot(data = robbery) +
geom_bar(mapping = aes(x = district)) +
theme(axis.text.x = element_text(hjust = 1)) +
ggtitle("ROBBERIES BY DISTRICT")
ggplot(data = criminal_damage) +
geom_bar(mapping = aes(x = district)) +
theme(axis.text.x = element_text(hjust = 1)) +
ggtitle("CRIMINAL DAMAGE CRIMES BY DISTRICT")
ggplot(data = deceptive_practice) +
geom_bar(mapping = aes(x = district)) +
theme(axis.text.x = element_text(hjust = 1)) +
ggtitle("DECEPTIVE PRACTICE CRIMES BY DISTRICT")
La ultima parte de la agrupacion es referida a distritos y arrestos. Voy a crear dos nuevas tablas con los casos donde no se ha dado ningún arresto y otras con los que sí se han dado arrestos.
A continuación creo una tabla con los porcentajes de arrestos, y visualizo esta informacion junto a los crimenes de cada distrito y el porcentaje de arresto en cada uno de ellos.
chicago_crime_subset$arrest <- factor(chicago_crime_subset$arrest)
districts_true <- sqldf('SELECT district, AVG(latitude) as avg_latitude,AVG(longitude) as avg_longitude, count(*) as arrest FROM chicago_crime_subset WHERE arrest LIKE "TRUE" GROUP BY district ORDER BY district')
districts_false <- sqldf('SELECT district, AVG(latitude) as avg_latitude,AVG(longitude) as avg_longitude, count(*) as no_arrest FROM chicago_crime_subset WHERE arrest LIKE "FALSE" GROUP BY district ORDER BY district')
districts_true$arrest <- as.numeric(districts_true$arrest)
districts_false$no_arrest <- as.numeric(districts_false$no_arrest)
arrest_percentage <- data.frame('District' = districts_false$district, 'PctArrest' = districts_true$arrest/(districts_true$arrest + districts_false$no_arrest), 'Crimes' = (districts_true$arrest + districts_false$no_arrest))
head(districts_false)
## district avg_latitude avg_longitude no_arrest
## 1 1 41.87528 -87.62879 52855
## 2 10 41.85266 -87.71224 30826
## 3 11 41.88176 -87.71908 38892
## 4 12 41.88185 -87.66918 46676
## 5 14 41.91678 -87.69052 35704
## 6 15 41.88582 -87.75894 25686
head(districts_true)
## district avg_latitude avg_longitude arrest
## 1 1 41.87445 -87.62949 11385
## 2 10 41.85642 -87.71370 13582
## 3 11 41.88200 -87.71997 28230
## 4 12 41.87919 -87.67305 7691
## 5 14 41.91692 -87.69123 4847
## 6 15 41.88497 -87.75600 11017
head(arrest_percentage)
## District PctArrest Crimes
## 1 1 0.1772260 64240
## 2 10 0.3058458 44408
## 3 11 0.4205775 67122
## 4 12 0.1414645 54367
## 5 14 0.1195285 40551
## 6 15 0.3001662 36703
ggplot(data = arrest_percentage) +
geom_col(mapping = aes(x = District, y = Crimes)) +
geom_line(aes(x = District, y = PctArrest*100000, group = 1), color = "yellow") +
scale_y_continuous(sec.axis = sec_axis(~./100000, name = "PctArrest")) +
theme(axis.text.x = element_text(hjust = 1))
En un mapa se ve donde esta cada distrito.
setDT(districts_false)
chicago <- get_stamenmap(bbox = c(left = -88.0225, bottom = 41.5949,
right = -87.2713, top = 42.0677),
zoom = 11)
## Source : http://tile.stamen.com/terrain/11/523/759.png
## Source : http://tile.stamen.com/terrain/11/524/759.png
## Source : http://tile.stamen.com/terrain/11/525/759.png
## Source : http://tile.stamen.com/terrain/11/526/759.png
## Source : http://tile.stamen.com/terrain/11/527/759.png
## Source : http://tile.stamen.com/terrain/11/523/760.png
## Source : http://tile.stamen.com/terrain/11/524/760.png
## Source : http://tile.stamen.com/terrain/11/525/760.png
## Source : http://tile.stamen.com/terrain/11/526/760.png
## Source : http://tile.stamen.com/terrain/11/527/760.png
## Source : http://tile.stamen.com/terrain/11/523/761.png
## Source : http://tile.stamen.com/terrain/11/524/761.png
## Source : http://tile.stamen.com/terrain/11/525/761.png
## Source : http://tile.stamen.com/terrain/11/526/761.png
## Source : http://tile.stamen.com/terrain/11/527/761.png
## Source : http://tile.stamen.com/terrain/11/523/762.png
## Source : http://tile.stamen.com/terrain/11/524/762.png
## Source : http://tile.stamen.com/terrain/11/525/762.png
## Source : http://tile.stamen.com/terrain/11/526/762.png
## Source : http://tile.stamen.com/terrain/11/527/762.png
## Source : http://tile.stamen.com/terrain/11/523/763.png
## Source : http://tile.stamen.com/terrain/11/524/763.png
## Source : http://tile.stamen.com/terrain/11/525/763.png
## Source : http://tile.stamen.com/terrain/11/526/763.png
## Source : http://tile.stamen.com/terrain/11/527/763.png
ggmap(chicago) +
geom_text(aes(x = LONGITUDE, y = LATITUDE, label = DISTRICT), data = police_districts)
Se puede ver la distribucion de los crímenes por distrito, deduciendo que crimen es mas “popular” en que distrito, además con ayuda del mapa de distritos, vemos por donde se situan mas o menos.
ASSAULT: El reparto parece mas o menos homogeneo, pero hay un mayor numero de crimenes en los distritos 4,6,7,8 y 11, situados al sur y oeste de la ciudad. Hay tambien un número considerable de asaltos en el centro y norte (A lo largo de la costa) de la ciudad.
CRIMINAL DAMAGE: En los delitos de daños, pasa similar a asaltos, pero claramente hay un distrito que sobresale, siendo este el distrito 8, situado al sur-oeste de la ciudad.
DECEPTIVE PRACTICE: Estos crimenes están claramente localizados en el centro y norte de la ciudad, las zonas mas ricas de la ciudad. Justo este crímen no es un crimen violento.
NARCOTICS: Este es el crímen mas claro de todos, prácticamente la totalidad de los crimenes se producen en os distritos 10,11 (El que mas con diferencia) y 15, al oeste de la ciudad.
ROBBERY: El reparto de este crimen es prácticament igual al de asaltos, con la salvedad que el distrito 8 tiene mas incidencia que el resto.
THEFT: Los robos sin violencia (Con violencia son ROBBERY), están bastante centrados en los distritos 1, 18 y 19, del centro y norte de la ciudad.
VIOLENT CRIMES: La mayoria de estos crímenes estan en el distrito 11, el mas afectado por las drogas. Por el resto de los distritos esta repartido mas homogéneamente, habiendo mas por el sur y oeste.
WEAPON VIOLATON: Los crímenes de armas están casi en su totalidad centrados en los distritos del sur y oeste (El 10 y 11).
ARRESTOS: En cuanto al porcentaje de arrestos, el mayor porcentaje se da en los distritos 10, 11 y 15, casualmente los mas afectados por narcoticos y crímenes violento, lo que parece indicar que estos crimenes son en los que mas arrestos hay. Salta a la vista que donde menos arrestos hay es en los distritos 1,2,18 y 19, los del centro, a pesar que hay un gran número de crímenes de robos y fraude (Deceptive Practice)
Viendo los siguientes mapas si parece que estas conclusiones van por buen camino. En el único por el que no parece ir muy encaminado el análisis en en asalto, ya que como vemos hay casi mas en el centro y norte de la ciudad que en el sur. Hay una explicación para ello, que una vez se confirme el reparto explicaré.
Para ampliar los histogramas de crimenes or distritos anteriores, se pueden visualizar esos números en el mapa, distribuidos por la ciudad.
En los siguiente gráficos se ve sobre el mapa a distribucion de cada crimen por la ciudad. Contrastándolo con el mapa anterior se puede comprobar como afecta cada crimen en cada zona de la ciudad.
# Por temas de limite de RAM, selecciono una muestra de 10000 casos, que para ilustrar tiene el mismo proposito.
leaflet()%>%
addTiles() %>%
addMarkers(data = assault[1:10000, ], group = "Assault", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
addMarkers(data = criminal_damage[1:10000, ], group = "Criminal Damage", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
addMarkers(data = deceptive_practice[1:10000, ], group = "Deceptive Practice", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
addMarkers(data = narcotics[1:10000, ], group = "Narcotics", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
addMarkers(data = robbery[1:10000, ], group = "Robberies", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
addMarkers(data = theft[1:10000, ], group = "Thefts", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
addMarkers(data = violent_crime[1:10000, ], group = "Violent Crimes", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
addMarkers(data = weapons_violation, group = "Weapon Violations", clusterOptions = markerClusterOptions(),popup = ~primary_type) %>%
addLayersControl(overlayGroups = c("Assault","Criminal Damage", "Deceptive Practice", "Narcotics","Robberies", "Thefts", "Violent Crimes", "Weapon Violations"),options = layersControlOptions(collapsed = FALSE))
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
## Assuming "longitude" and "latitude" are longitude and latitude, respectively
Por ultimo en esta sección vamos a ver una primera relación entre los porcentajes de arrestos según crimen y según el distrito.
También muestro como se distribuyen los crímenes a lo largo de los últimos 5 años.
crimes <- ggplot(data = chicago_crime_subset, aes(x = factor(year), fill = primary_type))+
geom_bar(stat = "count",position="dodge")+theme_classic()+
xlab("Year")+
ylab("Number of occurrences")+labs(fill = "Type of crimes")+
scale_fill_brewer(palette="YlOrRd")
ggplotly(crimes)
barplot(table(chicago_crime_subset$primary_type), main="Arrestos por Tipo de Crimen", legend.text=FALSE, ylim=c(0,400000), las=2)
par(new=T)
barplot(table((chicago_crime_subset %>% filter(arrest == "TRUE"))[3]), legend.text=FALSE, col='blue', ylim=c(0,400000), las=2)
legend(x="top", legend=c("No arresto","Arresto"),
fill=c("grey","blue"))
barplot(table(chicago_crime_subset$district), main="Arrestos por Distrito", legend.text=FALSE, ylim=c(0,75000), las=2)
par(new=T)
barplot(table((chicago_crime_subset %>% filter(arrest == "TRUE"))[6]), legend.text=FALSE, col='blue', ylim=c(0,75000), las=2)
legend(x="top", legend=c("No arresto","Arresto"),
fill=c("grey","blue"))
A lo largo de los años, los crimenes de armas han crecido ligeramente, al igual que los asaltos. Los delitos de daños y robos con violencia han bajado un poco y los de narcoticos también, aunque el cambio mas significativo fue de 2015 a 2016. Robos sin violencia, fraude y crimenes violentos se han mantenido constantes a lo largo de los ultimos 5 años.
En cuanto al porcentaje de arrestos por crimen, parece muy claro que hay un porcentaje muchísimo mayor para narcoticos y crimenes de armas que para el resto. De hecho, mientras que para narcoticos es de mas del 90%, para crimenes de armas de mas del 75%, en el resto de crimenes es de menos del 30%. Muy significativo es que para robos sin violencia y fraude, los delitos situados en la zona menos desfavorecida de la ciudad (Distritos 1,2,18 y 19), el porcentaje es de menos del 20%.
El porcentaje por distritos concuerda bastante con los resultados anteriores ya que los distritos con porcentajes mas altos son el 11, 10 (Narcoticos y Armas) y los del sur. Es bastante llamativo que también ocurre lo mismo en el 1, cuando los crimenes mas comunes no son esos. En mi opinión creo que esto se debe a que aunque en menos medida que otros distritos, sigue habiendo crimenes de narcoticos. Además, la subida de la influencia de asaltos en ese distrito puede tener algo que ver también.
year <- table(chicago_crime_subset$year)
print("Media de Crímenes por Año")
## [1] "Media de Crímenes por Año"
mean(year)
## [1] 199934.4
print("Mínimo de Crimenes en un Año")
## [1] "Mínimo de Crimenes en un Año"
min(year)
## [1] 195676
print("Maximo de Crimenes en un Año")
## [1] "Maximo de Crimenes en un Año"
max(year)
## [1] 204630
print("Mediana de los Crimenes")
## [1] "Mediana de los Crimenes"
median(year)
## [1] 200537
print("1er Cuartil de Crímenes por Año")
## [1] "1er Cuartil de Crímenes por Año"
quantile(year,0.25)
## 25%
## 195772
print("3er Cuartil de Crímenes por Año")
## [1] "3er Cuartil de Crímenes por Año"
quantile(year,0.75)
## 75%
## 203057
#BoxPlot
boxplot(c(year), las=2, main = "Crimenes por Año", col="orange")
grid(nx = NA, ny = NULL)
arrest <- c((chicago_crime_subset %>% filter(arrest == T))[9], (chicago_crime_subset %>% filter(arrest == F))[9])
boxplot(
c(table(arrest[1]$year)),
c(table(arrest[2]$year)),
names = c("Arrestos", "No Arrestos"),
las=1, main = "Comparacion de Arrestos y No Arrestos", col="orange"
)
grid(nx = NA, ny = NULL)
crimenes <- c((chicago_crime_subset %>% filter(primary_type == "ASSAULT"))[9],(chicago_crime_subset %>% filter(primary_type == "CRIMINAL DAMAGE"))[9],(chicago_crime_subset %>% filter(primary_type == "DECEPTIVE PRACTICE"))[9],(chicago_crime_subset %>% filter(primary_type == "NARCOTICS"))[9],(chicago_crime_subset %>% filter(primary_type == "ROBBERY"))[9],(chicago_crime_subset %>% filter(primary_type == "THEFT"))[9],(chicago_crime_subset %>% filter(primary_type == "VIOLENT CRIME"))[9],(chicago_crime_subset %>% filter(primary_type == "WEAPONS VIOLATION"))[9])
boxplot(
c(table(crimenes[1]$year)),
c(table(crimenes[2]$year)),
c(table(crimenes[3]$year)),
c(table(crimenes[4]$year)),
c(table(crimenes[5]$year)),
c(table(crimenes[6]$year)),
c(table(crimenes[7]$year)),
c(table(crimenes[8]$year)),
names = c("ASSAULT", "CRIMINAL DAMAGE", "DECEPTIVE PRACTICE", "NARCOTICS", "ROBBERY", "THEFT", "VIOLENT CRIME", "WEAPONS VIOLATION"),
las=1, main = "Comparacion de cada crimen", col="orange"
)
grid(nx = NA, ny = NULL)
Los estadisticos muestran que el numero de crimenes por año es bastante similar en los ultimos 5 años, hay poca variacion de año a año.
Esto se confirma con el primer boxplot, que no muestra ningun outlier y la variacion es de 8.000 crimenes del año con menos crímenes al que mas. Teniendo en cuenta que hay alrededor de 200.000 crímenes por año, es una variación pequeña.
En cuanto a arrestos, a lo largo de los años los números es similar.
En cuanto a crimenes, crimenes de daños, narcoticos y crimenes violentos tienen outliers superiores en algún año y fraude por abajo. El resto su distribución es similar a lo largo de estos 5 años. En el apartado CONCLUSIONES II se intuía esto y mas o menos se ha cumplido.
#chicago_crime_subset$district <- factor(chicago_crime_subset$district)
#chicago_crime_subset$primary_type <- factor(chicago_crime_subset$primary_type)
#chicago_crime_subset$arrest <- factor(chicago_crime_subset$arrest)
chicago_crime_subset$month <- factor(chicago_crime_subset$month)
mosaicplot(primary_type ~ district, data = chicago_crime_subset)
table(chicago_crime_subset$primary_type, chicago_crime_subset$district)
##
## 1 2 3 4 5 6 7 8 9
## ASSAULT 3181 3446 3935 4803 3625 4932 4484 4529 3626
## CRIMINAL DAMAGE 3689 5712 6369 7568 6140 7475 6205 10133 6748
## DECEPTIVE PRACTICE 9206 3402 2640 3153 2223 3765 2304 4987 2824
## NARCOTICS 859 1658 2224 3500 2697 4119 5333 3135 3084
## ROBBERY 5689 6135 8049 8265 6080 9700 7412 10482 6896
## THEFT 35336 14833 10948 13484 10028 16537 10713 20066 13305
## VIOLENT CRIME 6100 5766 6767 7470 6135 7918 8236 7423 6445
## WEAPONS VIOLATION 180 730 1219 1827 1904 2230 2617 1211 1340
##
## 10 11 12 14 15 16 17 18 19
## ASSAULT 3377 4452 3477 2253 2829 2377 1775 2482 2464
## CRIMINAL DAMAGE 5769 6576 7045 5304 4401 5093 4544 4226 5167
## DECEPTIVE PRACTICE 2089 2543 4275 2999 1950 4170 2488 9037 6200
## NARCOTICS 7374 20504 1753 717 6775 1354 767 906 926
## ROBBERY 6010 8545 7341 5641 5082 4911 4454 5743 7105
## THEFT 10717 12186 23631 19105 8133 12349 12378 34566 23565
## VIOLENT CRIME 7181 9844 6299 4145 6219 3970 3486 6446 5957
## WEAPONS VIOLATION 1891 2472 546 387 1314 234 309 232 201
##
## 20 22 24 25 31
## ASSAULT 1259 2280 2023 3790 2
## CRIMINAL DAMAGE 2205 4621 4508 7126 3
## DECEPTIVE PRACTICE 2182 2940 2568 4003 20
## NARCOTICS 506 1501 910 3515 0
## ROBBERY 2396 4704 4595 7415 0
## THEFT 6940 9797 11153 16932 6
## VIOLENT CRIME 2727 3989 3909 6588 3
## WEAPONS VIOLATION 139 675 297 1223 0
addmargins(table(chicago_crime_subset$primary_type, chicago_crime_subset$district))
##
## 1 2 3 4 5 6 7 8
## ASSAULT 3181 3446 3935 4803 3625 4932 4484 4529
## CRIMINAL DAMAGE 3689 5712 6369 7568 6140 7475 6205 10133
## DECEPTIVE PRACTICE 9206 3402 2640 3153 2223 3765 2304 4987
## NARCOTICS 859 1658 2224 3500 2697 4119 5333 3135
## ROBBERY 5689 6135 8049 8265 6080 9700 7412 10482
## THEFT 35336 14833 10948 13484 10028 16537 10713 20066
## VIOLENT CRIME 6100 5766 6767 7470 6135 7918 8236 7423
## WEAPONS VIOLATION 180 730 1219 1827 1904 2230 2617 1211
## Sum 64240 41682 42151 50070 38832 56676 47304 61966
##
## 9 10 11 12 14 15 16 17
## ASSAULT 3626 3377 4452 3477 2253 2829 2377 1775
## CRIMINAL DAMAGE 6748 5769 6576 7045 5304 4401 5093 4544
## DECEPTIVE PRACTICE 2824 2089 2543 4275 2999 1950 4170 2488
## NARCOTICS 3084 7374 20504 1753 717 6775 1354 767
## ROBBERY 6896 6010 8545 7341 5641 5082 4911 4454
## THEFT 13305 10717 12186 23631 19105 8133 12349 12378
## VIOLENT CRIME 6445 7181 9844 6299 4145 6219 3970 3486
## WEAPONS VIOLATION 1340 1891 2472 546 387 1314 234 309
## Sum 44268 44408 67122 54367 40551 36703 34458 30201
##
## 18 19 20 22 24 25 31 Sum
## ASSAULT 2482 2464 1259 2280 2023 3790 2 71401
## CRIMINAL DAMAGE 4226 5167 2205 4621 4508 7126 3 126627
## DECEPTIVE PRACTICE 9037 6200 2182 2940 2568 4003 20 81968
## NARCOTICS 906 926 506 1501 910 3515 0 74117
## ROBBERY 5743 7105 2396 4704 4595 7415 0 142650
## THEFT 34566 23565 6940 9797 11153 16932 6 346708
## VIOLENT CRIME 6446 5957 2727 3989 3909 6588 3 133023
## WEAPONS VIOLATION 232 201 139 675 297 1223 0 23178
## Sum 63638 51585 18354 30507 29963 50592 34 999672
prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$district))
##
## 1 2 3 4
## ASSAULT 3.182044e-03 3.447131e-03 3.936291e-03 4.804576e-03
## CRIMINAL DAMAGE 3.690210e-03 5.713874e-03 6.371090e-03 7.570483e-03
## DECEPTIVE PRACTICE 9.209021e-03 3.403116e-03 2.640866e-03 3.154035e-03
## NARCOTICS 8.592818e-04 1.658544e-03 2.224730e-03 3.501148e-03
## ROBBERY 5.690867e-03 6.137013e-03 8.051641e-03 8.267712e-03
## THEFT 3.534759e-02 1.483787e-02 1.095159e-02 1.348842e-02
## VIOLENT CRIME 6.102001e-03 5.767892e-03 6.769220e-03 7.472451e-03
## WEAPONS VIOLATION 1.800591e-04 7.302395e-04 1.219400e-03 1.827599e-03
##
## 5 6 7 8
## ASSAULT 3.626189e-03 4.933618e-03 4.485471e-03 4.530486e-03
## CRIMINAL DAMAGE 6.142015e-03 7.477453e-03 6.207036e-03 1.013632e-02
## DECEPTIVE PRACTICE 2.223729e-03 3.766235e-03 2.304756e-03 4.988636e-03
## NARCOTICS 2.697885e-03 4.120351e-03 5.334750e-03 3.136029e-03
## ROBBERY 6.081995e-03 9.703183e-03 7.414432e-03 1.048544e-02
## THEFT 1.003129e-02 1.654243e-02 1.071652e-02 2.007258e-02
## VIOLENT CRIME 6.137013e-03 7.920598e-03 8.238702e-03 7.425436e-03
## WEAPONS VIOLATION 1.904625e-03 2.230732e-03 2.617859e-03 1.211397e-03
##
## 9 10 11 12
## ASSAULT 3.627190e-03 3.378108e-03 4.453461e-03 3.478141e-03
## CRIMINAL DAMAGE 6.750214e-03 5.770893e-03 6.578158e-03 7.047312e-03
## DECEPTIVE PRACTICE 2.824927e-03 2.089685e-03 2.543834e-03 4.276403e-03
## NARCOTICS 3.085012e-03 7.376419e-03 2.051073e-02 1.753575e-03
## ROBBERY 6.898263e-03 6.011972e-03 8.547804e-03 7.343409e-03
## THEFT 1.330937e-02 1.072052e-02 1.219000e-02 2.363875e-02
## VIOLENT CRIME 6.447115e-03 7.183356e-03 9.847230e-03 6.301067e-03
## WEAPONS VIOLATION 1.340440e-03 1.891620e-03 2.472811e-03 5.461791e-04
##
## 14 15 16 17
## ASSAULT 2.253739e-03 2.829928e-03 2.377780e-03 1.775582e-03
## CRIMINAL DAMAGE 5.305740e-03 4.402444e-03 5.094671e-03 4.545491e-03
## DECEPTIVE PRACTICE 2.999984e-03 1.950640e-03 4.171368e-03 2.488816e-03
## NARCOTICS 7.172353e-04 6.777223e-03 1.354444e-03 7.672517e-04
## ROBBERY 5.642851e-03 5.083667e-03 4.912611e-03 4.455461e-03
## THEFT 1.911127e-02 8.135668e-03 1.235305e-02 1.238206e-02
## VIOLENT CRIME 4.146360e-03 6.221041e-03 3.971303e-03 3.487144e-03
## WEAPONS VIOLATION 3.871270e-04 1.314431e-03 2.340768e-04 3.091014e-04
##
## 18 19 20 22
## ASSAULT 2.482814e-03 2.464808e-03 1.259413e-03 2.280748e-03
## CRIMINAL DAMAGE 4.227387e-03 5.168695e-03 2.205723e-03 4.622516e-03
## DECEPTIVE PRACTICE 9.039965e-03 6.202034e-03 2.182716e-03 2.940965e-03
## NARCOTICS 9.062973e-04 9.263038e-04 5.061660e-04 1.501492e-03
## ROBBERY 5.744884e-03 7.107331e-03 2.396786e-03 4.705543e-03
## THEFT 3.457734e-02 2.357273e-02 6.942277e-03 9.800214e-03
## VIOLENT CRIME 6.448115e-03 5.958955e-03 2.727895e-03 3.990309e-03
## WEAPONS VIOLATION 2.320761e-04 2.010659e-04 1.390456e-04 6.752215e-04
##
## 24 25 31
## ASSAULT 2.023664e-03 3.791244e-03 2.000656e-06
## CRIMINAL DAMAGE 4.509479e-03 7.128338e-03 3.000984e-06
## DECEPTIVE PRACTICE 2.568843e-03 4.004313e-03 2.000656e-05
## NARCOTICS 9.102986e-04 3.516153e-03 0.000000e+00
## ROBBERY 4.596508e-03 7.417433e-03 0.000000e+00
## THEFT 1.115666e-02 1.693756e-02 6.001969e-06
## VIOLENT CRIME 3.910283e-03 6.590162e-03 3.000984e-06
## WEAPONS VIOLATION 2.970974e-04 1.223401e-03 0.000000e+00
addmargins(prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$district)))
##
## 1 2 3 4
## ASSAULT 3.182044e-03 3.447131e-03 3.936291e-03 4.804576e-03
## CRIMINAL DAMAGE 3.690210e-03 5.713874e-03 6.371090e-03 7.570483e-03
## DECEPTIVE PRACTICE 9.209021e-03 3.403116e-03 2.640866e-03 3.154035e-03
## NARCOTICS 8.592818e-04 1.658544e-03 2.224730e-03 3.501148e-03
## ROBBERY 5.690867e-03 6.137013e-03 8.051641e-03 8.267712e-03
## THEFT 3.534759e-02 1.483787e-02 1.095159e-02 1.348842e-02
## VIOLENT CRIME 6.102001e-03 5.767892e-03 6.769220e-03 7.472451e-03
## WEAPONS VIOLATION 1.800591e-04 7.302395e-04 1.219400e-03 1.827599e-03
## Sum 6.426108e-02 4.169568e-02 4.216483e-02 5.008643e-02
##
## 5 6 7 8
## ASSAULT 3.626189e-03 4.933618e-03 4.485471e-03 4.530486e-03
## CRIMINAL DAMAGE 6.142015e-03 7.477453e-03 6.207036e-03 1.013632e-02
## DECEPTIVE PRACTICE 2.223729e-03 3.766235e-03 2.304756e-03 4.988636e-03
## NARCOTICS 2.697885e-03 4.120351e-03 5.334750e-03 3.136029e-03
## ROBBERY 6.081995e-03 9.703183e-03 7.414432e-03 1.048544e-02
## THEFT 1.003129e-02 1.654243e-02 1.071652e-02 2.007258e-02
## VIOLENT CRIME 6.137013e-03 7.920598e-03 8.238702e-03 7.425436e-03
## WEAPONS VIOLATION 1.904625e-03 2.230732e-03 2.617859e-03 1.211397e-03
## Sum 3.884474e-02 5.669460e-02 4.731952e-02 6.198633e-02
##
## 9 10 11 12
## ASSAULT 3.627190e-03 3.378108e-03 4.453461e-03 3.478141e-03
## CRIMINAL DAMAGE 6.750214e-03 5.770893e-03 6.578158e-03 7.047312e-03
## DECEPTIVE PRACTICE 2.824927e-03 2.089685e-03 2.543834e-03 4.276403e-03
## NARCOTICS 3.085012e-03 7.376419e-03 2.051073e-02 1.753575e-03
## ROBBERY 6.898263e-03 6.011972e-03 8.547804e-03 7.343409e-03
## THEFT 1.330937e-02 1.072052e-02 1.219000e-02 2.363875e-02
## VIOLENT CRIME 6.447115e-03 7.183356e-03 9.847230e-03 6.301067e-03
## WEAPONS VIOLATION 1.340440e-03 1.891620e-03 2.472811e-03 5.461791e-04
## Sum 4.428252e-02 4.442257e-02 6.714402e-02 5.438484e-02
##
## 14 15 16 17
## ASSAULT 2.253739e-03 2.829928e-03 2.377780e-03 1.775582e-03
## CRIMINAL DAMAGE 5.305740e-03 4.402444e-03 5.094671e-03 4.545491e-03
## DECEPTIVE PRACTICE 2.999984e-03 1.950640e-03 4.171368e-03 2.488816e-03
## NARCOTICS 7.172353e-04 6.777223e-03 1.354444e-03 7.672517e-04
## ROBBERY 5.642851e-03 5.083667e-03 4.912611e-03 4.455461e-03
## THEFT 1.911127e-02 8.135668e-03 1.235305e-02 1.238206e-02
## VIOLENT CRIME 4.146360e-03 6.221041e-03 3.971303e-03 3.487144e-03
## WEAPONS VIOLATION 3.871270e-04 1.314431e-03 2.340768e-04 3.091014e-04
## Sum 4.056431e-02 3.671504e-02 3.446931e-02 3.021091e-02
##
## 18 19 20 22
## ASSAULT 2.482814e-03 2.464808e-03 1.259413e-03 2.280748e-03
## CRIMINAL DAMAGE 4.227387e-03 5.168695e-03 2.205723e-03 4.622516e-03
## DECEPTIVE PRACTICE 9.039965e-03 6.202034e-03 2.182716e-03 2.940965e-03
## NARCOTICS 9.062973e-04 9.263038e-04 5.061660e-04 1.501492e-03
## ROBBERY 5.744884e-03 7.107331e-03 2.396786e-03 4.705543e-03
## THEFT 3.457734e-02 2.357273e-02 6.942277e-03 9.800214e-03
## VIOLENT CRIME 6.448115e-03 5.958955e-03 2.727895e-03 3.990309e-03
## WEAPONS VIOLATION 2.320761e-04 2.010659e-04 1.390456e-04 6.752215e-04
## Sum 6.365888e-02 5.160193e-02 1.836002e-02 3.051701e-02
##
## 24 25 31 Sum
## ASSAULT 2.023664e-03 3.791244e-03 2.000656e-06 7.142443e-02
## CRIMINAL DAMAGE 4.509479e-03 7.128338e-03 3.000984e-06 1.266685e-01
## DECEPTIVE PRACTICE 2.568843e-03 4.004313e-03 2.000656e-05 8.199489e-02
## NARCOTICS 9.102986e-04 3.516153e-03 0.000000e+00 7.414132e-02
## ROBBERY 4.596508e-03 7.417433e-03 0.000000e+00 1.426968e-01
## THEFT 1.115666e-02 1.693756e-02 6.001969e-06 3.468218e-01
## VIOLENT CRIME 3.910283e-03 6.590162e-03 3.000984e-06 1.330666e-01
## WEAPONS VIOLATION 2.970974e-04 1.223401e-03 0.000000e+00 2.318560e-02
## Sum 2.997283e-02 5.060860e-02 3.401116e-05 1.000000e+00
A pesar de ser porcentajes muy bajos. Las principales conclusiones obtenidas en los apartados anteriores se mantienen, por ejemplo, vemos como el 2% del total de los crimenes son en el distrito 11 y de drogas y que, por ejemplo el 3.5% de los crimenes son robos sin violencia en el distrito 1, otra de las conclusiones obtenidas anteriormente.
mosaicplot(primary_type ~ arrest, data = chicago_crime_subset)
table(chicago_crime_subset$primary_type, chicago_crime_subset$arrest)
##
## FALSE TRUE
## ASSAULT 57517 13884
## CRIMINAL DAMAGE 120041 6586
## DECEPTIVE PRACTICE 77610 4358
## NARCOTICS 42 74075
## ROBBERY 116212 26438
## THEFT 311171 35537
## VIOLENT CRIME 104987 28036
## WEAPONS VIOLATION 6346 16832
addmargins(table(chicago_crime_subset$primary_type, chicago_crime_subset$arrest))
##
## FALSE TRUE Sum
## ASSAULT 57517 13884 71401
## CRIMINAL DAMAGE 120041 6586 126627
## DECEPTIVE PRACTICE 77610 4358 81968
## NARCOTICS 42 74075 74117
## ROBBERY 116212 26438 142650
## THEFT 311171 35537 346708
## VIOLENT CRIME 104987 28036 133023
## WEAPONS VIOLATION 6346 16832 23178
## Sum 793926 205746 999672
prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$arrest))
##
## FALSE TRUE
## ASSAULT 5.753587e-02 1.388856e-02
## CRIMINAL DAMAGE 1.200804e-01 6.588161e-03
## DECEPTIVE PRACTICE 7.763546e-02 4.359430e-03
## NARCOTICS 4.201378e-05 7.409930e-02
## ROBBERY 1.162501e-01 2.644667e-02
## THEFT 3.112731e-01 3.554866e-02
## VIOLENT CRIME 1.050214e-01 2.804520e-02
## WEAPONS VIOLATION 6.348082e-03 1.683752e-02
addmargins(prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$arrest)))
##
## FALSE TRUE Sum
## ASSAULT 5.753587e-02 1.388856e-02 7.142443e-02
## CRIMINAL DAMAGE 1.200804e-01 6.588161e-03 1.266685e-01
## DECEPTIVE PRACTICE 7.763546e-02 4.359430e-03 8.199489e-02
## NARCOTICS 4.201378e-05 7.409930e-02 7.414132e-02
## ROBBERY 1.162501e-01 2.644667e-02 1.426968e-01
## THEFT 3.112731e-01 3.554866e-02 3.468218e-01
## VIOLENT CRIME 1.050214e-01 2.804520e-02 1.330666e-01
## WEAPONS VIOLATION 6.348082e-03 1.683752e-02 2.318560e-02
## Sum 7.941865e-01 2.058135e-01 1.000000e+00
Relacionando los crimenes con los arrestos también se ve como robos sin violencia y fraudes tienen muy poca tasa de arrestos mientras que crimenes mas violentos como pueden ser armas o drogas tienen una tasa de arresto mucho mayor.
mosaicplot(primary_type ~ month, data = chicago_crime_subset)
table(chicago_crime_subset$primary_type, chicago_crime_subset$month)
##
## 1 2 3 4 5 6 7 8 9
## ASSAULT 4864 4709 5874 5862 6994 6867 6762 6530 6421
## CRIMINAL DAMAGE 9296 8051 10013 10372 11465 11239 12252 12015 11034
## DECEPTIVE PRACTICE 6927 6498 7101 6921 6883 6935 7082 7287 6723
## NARCOTICS 6782 6392 7618 6733 6612 6040 6309 6221 5896
## ROBBERY 12246 9208 10210 10579 11784 12076 13107 13527 12478
## THEFT 26881 22594 25334 26208 29202 30844 32582 34007 30650
## VIOLENT CRIME 9116 8633 11046 10661 13159 12712 12673 12243 12034
## WEAPONS VIOLATION 1634 1408 1808 1895 2183 2155 2398 2298 2091
##
## 10 11 12
## ASSAULT 6163 5291 5064
## CRIMINAL DAMAGE 11331 9936 9623
## DECEPTIVE PRACTICE 6813 6298 6500
## NARCOTICS 5549 5434 4531
## ROBBERY 12887 12191 12357
## THEFT 30678 28197 29531
## VIOLENT CRIME 11610 9731 9405
## WEAPONS VIOLATION 1885 1713 1710
addmargins(table(chicago_crime_subset$primary_type, chicago_crime_subset$month))
##
## 1 2 3 4 5 6 7 8
## ASSAULT 4864 4709 5874 5862 6994 6867 6762 6530
## CRIMINAL DAMAGE 9296 8051 10013 10372 11465 11239 12252 12015
## DECEPTIVE PRACTICE 6927 6498 7101 6921 6883 6935 7082 7287
## NARCOTICS 6782 6392 7618 6733 6612 6040 6309 6221
## ROBBERY 12246 9208 10210 10579 11784 12076 13107 13527
## THEFT 26881 22594 25334 26208 29202 30844 32582 34007
## VIOLENT CRIME 9116 8633 11046 10661 13159 12712 12673 12243
## WEAPONS VIOLATION 1634 1408 1808 1895 2183 2155 2398 2298
## Sum 77746 67493 79004 79231 88282 88868 93165 94128
##
## 9 10 11 12 Sum
## ASSAULT 6421 6163 5291 5064 71401
## CRIMINAL DAMAGE 11034 11331 9936 9623 126627
## DECEPTIVE PRACTICE 6723 6813 6298 6500 81968
## NARCOTICS 5896 5549 5434 4531 74117
## ROBBERY 12478 12887 12191 12357 142650
## THEFT 30650 30678 28197 29531 346708
## VIOLENT CRIME 12034 11610 9731 9405 133023
## WEAPONS VIOLATION 2091 1885 1713 1710 23178
## Sum 87327 86916 78791 78721 999672
prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$month))
##
## 1 2 3 4
## ASSAULT 0.004865596 0.004710545 0.005875927 0.005863923
## CRIMINAL DAMAGE 0.009299050 0.008053642 0.010016285 0.010375403
## DECEPTIVE PRACTICE 0.006929273 0.006500132 0.007103330 0.006923271
## NARCOTICS 0.006784225 0.006394097 0.007620500 0.006735209
## ROBBERY 0.012250018 0.009211021 0.010213350 0.010582471
## THEFT 0.026889820 0.022601413 0.025342312 0.026216599
## VIOLENT CRIME 0.009118991 0.008635833 0.011049624 0.010664498
## WEAPONS VIOLATION 0.001634536 0.001408462 0.001808593 0.001895622
##
## 5 6 7 8
## ASSAULT 0.006996295 0.006869253 0.006764219 0.006532143
## CRIMINAL DAMAGE 0.011468762 0.011242688 0.012256020 0.012018942
## DECEPTIVE PRACTICE 0.006885258 0.006937275 0.007084324 0.007289391
## NARCOTICS 0.006614169 0.006041982 0.006311070 0.006223041
## ROBBERY 0.011787866 0.012079962 0.013111301 0.013531438
## THEFT 0.029211581 0.030854120 0.032592690 0.034018158
## VIOLENT CRIME 0.013163318 0.012716171 0.012677158 0.012247017
## WEAPONS VIOLATION 0.002183716 0.002155707 0.002398787 0.002298754
##
## 9 10 11 12
## ASSAULT 0.006423107 0.006165022 0.005292736 0.005065662
## CRIMINAL DAMAGE 0.011037620 0.011334718 0.009939260 0.009626157
## DECEPTIVE PRACTICE 0.006725206 0.006815235 0.006300066 0.006502133
## NARCOTICS 0.005897935 0.005550821 0.005435783 0.004532487
## ROBBERY 0.012482094 0.012891228 0.012195000 0.012361054
## THEFT 0.030660056 0.030688066 0.028206252 0.029540689
## VIOLENT CRIME 0.012037948 0.011613809 0.009734193 0.009408086
## WEAPONS VIOLATION 0.002091686 0.001885618 0.001713562 0.001710561
addmargins(prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$month)))
##
## 1 2 3 4
## ASSAULT 0.004865596 0.004710545 0.005875927 0.005863923
## CRIMINAL DAMAGE 0.009299050 0.008053642 0.010016285 0.010375403
## DECEPTIVE PRACTICE 0.006929273 0.006500132 0.007103330 0.006923271
## NARCOTICS 0.006784225 0.006394097 0.007620500 0.006735209
## ROBBERY 0.012250018 0.009211021 0.010213350 0.010582471
## THEFT 0.026889820 0.022601413 0.025342312 0.026216599
## VIOLENT CRIME 0.009118991 0.008635833 0.011049624 0.010664498
## WEAPONS VIOLATION 0.001634536 0.001408462 0.001808593 0.001895622
## Sum 0.077771509 0.067515145 0.079029922 0.079256996
##
## 5 6 7 8
## ASSAULT 0.006996295 0.006869253 0.006764219 0.006532143
## CRIMINAL DAMAGE 0.011468762 0.011242688 0.012256020 0.012018942
## DECEPTIVE PRACTICE 0.006885258 0.006937275 0.007084324 0.007289391
## NARCOTICS 0.006614169 0.006041982 0.006311070 0.006223041
## ROBBERY 0.011787866 0.012079962 0.013111301 0.013531438
## THEFT 0.029211581 0.030854120 0.032592690 0.034018158
## VIOLENT CRIME 0.013163318 0.012716171 0.012677158 0.012247017
## WEAPONS VIOLATION 0.002183716 0.002155707 0.002398787 0.002298754
## Sum 0.088310966 0.088897158 0.093195568 0.094158884
##
## 9 10 11 12
## ASSAULT 0.006423107 0.006165022 0.005292736 0.005065662
## CRIMINAL DAMAGE 0.011037620 0.011334718 0.009939260 0.009626157
## DECEPTIVE PRACTICE 0.006725206 0.006815235 0.006300066 0.006502133
## NARCOTICS 0.005897935 0.005550821 0.005435783 0.004532487
## ROBBERY 0.012482094 0.012891228 0.012195000 0.012361054
## THEFT 0.030660056 0.030688066 0.028206252 0.029540689
## VIOLENT CRIME 0.012037948 0.011613809 0.009734193 0.009408086
## WEAPONS VIOLATION 0.002091686 0.001885618 0.001713562 0.001710561
## Sum 0.087355653 0.086944518 0.078816852 0.078746829
##
## Sum
## ASSAULT 0.071424427
## CRIMINAL DAMAGE 0.126668547
## DECEPTIVE PRACTICE 0.081994894
## NARCOTICS 0.074141318
## ROBBERY 0.142696805
## THEFT 0.346821758
## VIOLENT CRIME 0.133066646
## WEAPONS VIOLATION 0.023185605
## Sum 1.000000000
En cuanto a los crimenes por meses, si uno se fija en el gráfico de mosaico, no se puede sacar mucha información, pero si nos fijamos en la line SUM de las tablas por meses, se ve que hay un ligero aumento de crimenes en los meses de verano. En los meses mas fríos (Recordemos que en Chicago en invierno hace mucho frío, con medias de temperaturas en los meses de Enero y Febrero de hasta -15º C), la tasa de crimen en un mes es de un 6%-7% (Enero, Febrero) mientras que en los meses de verano (Julio-Agosto) llega a casi un 9.5%.
mosaicplot(arrest ~ district, data = chicago_crime_subset)
table(chicago_crime_subset$arrest, chicago_crime_subset$district)
##
## 1 2 3 4 5 6 7 8 9 10 11 12
## FALSE 52855 35227 34306 39494 29583 42771 34590 51694 35297 30826 38892 46676
## TRUE 11385 6455 7845 10576 9249 13905 12714 10272 8971 13582 28230 7691
##
## 14 15 16 17 18 19 20 22 24 25 31
## FALSE 35704 25686 29229 26584 53719 44311 15374 25122 25472 40495 19
## TRUE 4847 11017 5229 3617 9919 7274 2980 5385 4491 10097 15
addmargins(table(chicago_crime_subset$arrest, chicago_crime_subset$district))
##
## 1 2 3 4 5 6 7 8 9 10
## FALSE 52855 35227 34306 39494 29583 42771 34590 51694 35297 30826
## TRUE 11385 6455 7845 10576 9249 13905 12714 10272 8971 13582
## Sum 64240 41682 42151 50070 38832 56676 47304 61966 44268 44408
##
## 11 12 14 15 16 17 18 19 20 22
## FALSE 38892 46676 35704 25686 29229 26584 53719 44311 15374 25122
## TRUE 28230 7691 4847 11017 5229 3617 9919 7274 2980 5385
## Sum 67122 54367 40551 36703 34458 30201 63638 51585 18354 30507
##
## 24 25 31 Sum
## FALSE 25472 40495 19 793926
## TRUE 4491 10097 15 205746
## Sum 29963 50592 34 999672
prop.table(table(chicago_crime_subset$arrest, chicago_crime_subset$district))
##
## 1 2 3 4 5
## FALSE 5.287234e-02 3.523856e-02 3.431726e-02 3.950696e-02 2.959271e-02
## TRUE 1.138874e-02 6.457118e-03 7.847574e-03 1.057947e-02 9.252035e-03
##
## 6 7 8 9 10
## FALSE 4.278503e-02 3.460135e-02 5.171096e-02 3.530858e-02 3.083611e-02
## TRUE 1.390956e-02 1.271817e-02 1.027537e-02 8.973943e-03 1.358646e-02
##
## 11 12 14 15 16
## FALSE 3.890476e-02 4.669131e-02 3.571571e-02 2.569443e-02 2.923859e-02
## TRUE 2.823926e-02 7.693523e-03 4.848590e-03 1.102061e-02 5.230716e-03
##
## 17 18 19 20 22
## FALSE 2.659272e-02 5.373663e-02 4.432554e-02 1.537904e-02 2.513024e-02
## TRUE 3.618187e-03 9.922254e-03 7.276387e-03 2.980978e-03 5.386767e-03
##
## 24 25 31
## FALSE 2.548036e-02 4.050829e-02 1.900623e-05
## TRUE 4.492474e-03 1.010031e-02 1.500492e-05
addmargins(prop.table(table(chicago_crime_subset$arrest, chicago_crime_subset$district)))
##
## 1 2 3 4 5
## FALSE 5.287234e-02 3.523856e-02 3.431726e-02 3.950696e-02 2.959271e-02
## TRUE 1.138874e-02 6.457118e-03 7.847574e-03 1.057947e-02 9.252035e-03
## Sum 6.426108e-02 4.169568e-02 4.216483e-02 5.008643e-02 3.884474e-02
##
## 6 7 8 9 10
## FALSE 4.278503e-02 3.460135e-02 5.171096e-02 3.530858e-02 3.083611e-02
## TRUE 1.390956e-02 1.271817e-02 1.027537e-02 8.973943e-03 1.358646e-02
## Sum 5.669460e-02 4.731952e-02 6.198633e-02 4.428252e-02 4.442257e-02
##
## 11 12 14 15 16
## FALSE 3.890476e-02 4.669131e-02 3.571571e-02 2.569443e-02 2.923859e-02
## TRUE 2.823926e-02 7.693523e-03 4.848590e-03 1.102061e-02 5.230716e-03
## Sum 6.714402e-02 5.438484e-02 4.056431e-02 3.671504e-02 3.446931e-02
##
## 17 18 19 20 22
## FALSE 2.659272e-02 5.373663e-02 4.432554e-02 1.537904e-02 2.513024e-02
## TRUE 3.618187e-03 9.922254e-03 7.276387e-03 2.980978e-03 5.386767e-03
## Sum 3.021091e-02 6.365888e-02 5.160193e-02 1.836002e-02 3.051701e-02
##
## 24 25 31 Sum
## FALSE 2.548036e-02 4.050829e-02 1.900623e-05 7.941865e-01
## TRUE 4.492474e-03 1.010031e-02 1.500492e-05 2.058135e-01
## Sum 2.997283e-02 5.060860e-02 3.401116e-05 1.000000e+00
En cuanto a arrestos y distritos se ve claramente como los distritos donde drogas y armas son los crímenes mas comunes tienen la tasa de arresto mas alta.
# Usando dplyr
chicago_crime_subset %>%
count(district, primary_type) %>%
group_by(district) %>%
mutate(proporcion = prop.table(n))
## # A tibble: 181 x 4
## # Groups: district [23]
## district primary_type n proporcion
## <fct> <fct> <int> <dbl>
## 1 1 ASSAULT 3181 0.0495
## 2 1 CRIMINAL DAMAGE 3689 0.0574
## 3 1 DECEPTIVE PRACTICE 9206 0.143
## 4 1 NARCOTICS 859 0.0134
## 5 1 ROBBERY 5689 0.0886
## 6 1 THEFT 35336 0.550
## 7 1 VIOLENT CRIME 6100 0.0950
## 8 1 WEAPONS VIOLATION 180 0.00280
## 9 2 ASSAULT 3446 0.0827
## 10 2 CRIMINAL DAMAGE 5712 0.137
## # … with 171 more rows
distrito = chicago_crime_subset %>%
select(district,primary_type) %>%
filter(district == "11")
prop.table(table(distrito$primary_type))
##
## ASSAULT CRIMINAL DAMAGE DECEPTIVE PRACTICE NARCOTICS
## 0.06632699 0.09797086 0.03788624 0.30547362
## ROBBERY THEFT VIOLENT CRIME WEAPONS VIOLATION
## 0.12730550 0.18155001 0.14665832 0.03682846
chicago_crime_subset %>%
count(district, primary_type) %>%
group_by(district) %>%
mutate(proporcion = prop.table(n))
## # A tibble: 181 x 4
## # Groups: district [23]
## district primary_type n proporcion
## <fct> <fct> <int> <dbl>
## 1 1 ASSAULT 3181 0.0495
## 2 1 CRIMINAL DAMAGE 3689 0.0574
## 3 1 DECEPTIVE PRACTICE 9206 0.143
## 4 1 NARCOTICS 859 0.0134
## 5 1 ROBBERY 5689 0.0886
## 6 1 THEFT 35336 0.550
## 7 1 VIOLENT CRIME 6100 0.0950
## 8 1 WEAPONS VIOLATION 180 0.00280
## 9 2 ASSAULT 3446 0.0827
## 10 2 CRIMINAL DAMAGE 5712 0.137
## # … with 171 more rows
distrito = chicago_crime_subset %>%
select(district,primary_type) %>%
filter(district == "1")
prop.table(table(distrito$primary_type))
##
## ASSAULT CRIMINAL DAMAGE DECEPTIVE PRACTICE NARCOTICS
## 0.049517435 0.057425280 0.143306351 0.013371731
## ROBBERY THEFT VIOLENT CRIME WEAPONS VIOLATION
## 0.088558531 0.550062267 0.094956413 0.002801993
La probabilidad de que un crimen del distrito 11 sea de drogas es la mayor de todas, como esperabamos con un 30.5%. Es superior incluso a robos sin violencia que, teniendo en cuenta que hay entre 4 y 5 veces mas crimenes de ese tipo totales que de drogas resalta aún mas la gran incidencia de los narcoticos en el oeste de la ciudad. Si lo comparamos con el distrito uno, el porcentaje de crimenes de drogas es de 1.3%, muchísimo menor que en el 11, y el de robos sin violencia es de un 55%.
chicago_crime_subset %>%
count(district, arrest) %>%
group_by(district) %>%
filter(district == "11") %>%
mutate(proporcion = prop.table(n))
## # A tibble: 2 x 4
## # Groups: district [1]
## district arrest n proporcion
## <fct> <fct> <int> <dbl>
## 1 11 FALSE 38892 0.579
## 2 11 TRUE 28230 0.421
chicago_crime_subset %>%
count(district, arrest) %>%
group_by(district) %>%
mutate(proporcion = prop.table(n))
## # A tibble: 46 x 4
## # Groups: district [23]
## district arrest n proporcion
## <fct> <fct> <int> <dbl>
## 1 1 FALSE 52855 0.823
## 2 1 TRUE 11385 0.177
## 3 2 FALSE 35227 0.845
## 4 2 TRUE 6455 0.155
## 5 3 FALSE 34306 0.814
## 6 3 TRUE 7845 0.186
## 7 4 FALSE 39494 0.789
## 8 4 TRUE 10576 0.211
## 9 5 FALSE 29583 0.762
## 10 5 TRUE 9249 0.238
## # … with 36 more rows
chicago_crime_subset %>%
count(district, arrest) %>%
group_by(district) %>%
filter(district == "1") %>%
mutate(proporcion = prop.table(n))
## # A tibble: 2 x 4
## # Groups: district [1]
## district arrest n proporcion
## <fct> <fct> <int> <dbl>
## 1 1 FALSE 52855 0.823
## 2 1 TRUE 11385 0.177
chicago_crime_subset %>%
count(district, arrest) %>%
group_by(district) %>%
mutate(proporcion = prop.table(n))
## # A tibble: 46 x 4
## # Groups: district [23]
## district arrest n proporcion
## <fct> <fct> <int> <dbl>
## 1 1 FALSE 52855 0.823
## 2 1 TRUE 11385 0.177
## 3 2 FALSE 35227 0.845
## 4 2 TRUE 6455 0.155
## 5 3 FALSE 34306 0.814
## 6 3 TRUE 7845 0.186
## 7 4 FALSE 39494 0.789
## 8 4 TRUE 10576 0.211
## 9 5 FALSE 29583 0.762
## 10 5 TRUE 9249 0.238
## # … with 36 more rows
La probabilidad de que se produzca un arresto es de un 42%, que teniendo en cuenta que el resto de distritos tienen una media de un 20% aproximadamente (Sin contar los distritos 10 y 15, que estan tambien muy afectados por las drogas y su tasa es del 30%), también demuestra la gran importancia de los crimenes de drogas en esta zona. Si lo comparamos con el distrito 1, la diferencia es abismal, teniendo este último una tasa de arrestos de un 17.7%.
prop.table(table(chicago_crime_subset$primary_type))
##
## ASSAULT CRIMINAL DAMAGE DECEPTIVE PRACTICE NARCOTICS
## 0.07142443 0.12666855 0.08199489 0.07414132
## ROBBERY THEFT VIOLENT CRIME WEAPONS VIOLATION
## 0.14269680 0.34682176 0.13306665 0.02318560
addmargins(prop.table(table(chicago_crime_subset$primary_type, chicago_crime_subset$district)))
##
## 1 2 3 4
## ASSAULT 3.182044e-03 3.447131e-03 3.936291e-03 4.804576e-03
## CRIMINAL DAMAGE 3.690210e-03 5.713874e-03 6.371090e-03 7.570483e-03
## DECEPTIVE PRACTICE 9.209021e-03 3.403116e-03 2.640866e-03 3.154035e-03
## NARCOTICS 8.592818e-04 1.658544e-03 2.224730e-03 3.501148e-03
## ROBBERY 5.690867e-03 6.137013e-03 8.051641e-03 8.267712e-03
## THEFT 3.534759e-02 1.483787e-02 1.095159e-02 1.348842e-02
## VIOLENT CRIME 6.102001e-03 5.767892e-03 6.769220e-03 7.472451e-03
## WEAPONS VIOLATION 1.800591e-04 7.302395e-04 1.219400e-03 1.827599e-03
## Sum 6.426108e-02 4.169568e-02 4.216483e-02 5.008643e-02
##
## 5 6 7 8
## ASSAULT 3.626189e-03 4.933618e-03 4.485471e-03 4.530486e-03
## CRIMINAL DAMAGE 6.142015e-03 7.477453e-03 6.207036e-03 1.013632e-02
## DECEPTIVE PRACTICE 2.223729e-03 3.766235e-03 2.304756e-03 4.988636e-03
## NARCOTICS 2.697885e-03 4.120351e-03 5.334750e-03 3.136029e-03
## ROBBERY 6.081995e-03 9.703183e-03 7.414432e-03 1.048544e-02
## THEFT 1.003129e-02 1.654243e-02 1.071652e-02 2.007258e-02
## VIOLENT CRIME 6.137013e-03 7.920598e-03 8.238702e-03 7.425436e-03
## WEAPONS VIOLATION 1.904625e-03 2.230732e-03 2.617859e-03 1.211397e-03
## Sum 3.884474e-02 5.669460e-02 4.731952e-02 6.198633e-02
##
## 9 10 11 12
## ASSAULT 3.627190e-03 3.378108e-03 4.453461e-03 3.478141e-03
## CRIMINAL DAMAGE 6.750214e-03 5.770893e-03 6.578158e-03 7.047312e-03
## DECEPTIVE PRACTICE 2.824927e-03 2.089685e-03 2.543834e-03 4.276403e-03
## NARCOTICS 3.085012e-03 7.376419e-03 2.051073e-02 1.753575e-03
## ROBBERY 6.898263e-03 6.011972e-03 8.547804e-03 7.343409e-03
## THEFT 1.330937e-02 1.072052e-02 1.219000e-02 2.363875e-02
## VIOLENT CRIME 6.447115e-03 7.183356e-03 9.847230e-03 6.301067e-03
## WEAPONS VIOLATION 1.340440e-03 1.891620e-03 2.472811e-03 5.461791e-04
## Sum 4.428252e-02 4.442257e-02 6.714402e-02 5.438484e-02
##
## 14 15 16 17
## ASSAULT 2.253739e-03 2.829928e-03 2.377780e-03 1.775582e-03
## CRIMINAL DAMAGE 5.305740e-03 4.402444e-03 5.094671e-03 4.545491e-03
## DECEPTIVE PRACTICE 2.999984e-03 1.950640e-03 4.171368e-03 2.488816e-03
## NARCOTICS 7.172353e-04 6.777223e-03 1.354444e-03 7.672517e-04
## ROBBERY 5.642851e-03 5.083667e-03 4.912611e-03 4.455461e-03
## THEFT 1.911127e-02 8.135668e-03 1.235305e-02 1.238206e-02
## VIOLENT CRIME 4.146360e-03 6.221041e-03 3.971303e-03 3.487144e-03
## WEAPONS VIOLATION 3.871270e-04 1.314431e-03 2.340768e-04 3.091014e-04
## Sum 4.056431e-02 3.671504e-02 3.446931e-02 3.021091e-02
##
## 18 19 20 22
## ASSAULT 2.482814e-03 2.464808e-03 1.259413e-03 2.280748e-03
## CRIMINAL DAMAGE 4.227387e-03 5.168695e-03 2.205723e-03 4.622516e-03
## DECEPTIVE PRACTICE 9.039965e-03 6.202034e-03 2.182716e-03 2.940965e-03
## NARCOTICS 9.062973e-04 9.263038e-04 5.061660e-04 1.501492e-03
## ROBBERY 5.744884e-03 7.107331e-03 2.396786e-03 4.705543e-03
## THEFT 3.457734e-02 2.357273e-02 6.942277e-03 9.800214e-03
## VIOLENT CRIME 6.448115e-03 5.958955e-03 2.727895e-03 3.990309e-03
## WEAPONS VIOLATION 2.320761e-04 2.010659e-04 1.390456e-04 6.752215e-04
## Sum 6.365888e-02 5.160193e-02 1.836002e-02 3.051701e-02
##
## 24 25 31 Sum
## ASSAULT 2.023664e-03 3.791244e-03 2.000656e-06 7.142443e-02
## CRIMINAL DAMAGE 4.509479e-03 7.128338e-03 3.000984e-06 1.266685e-01
## DECEPTIVE PRACTICE 2.568843e-03 4.004313e-03 2.000656e-05 8.199489e-02
## NARCOTICS 9.102986e-04 3.516153e-03 0.000000e+00 7.414132e-02
## ROBBERY 4.596508e-03 7.417433e-03 0.000000e+00 1.426968e-01
## THEFT 1.115666e-02 1.693756e-02 6.001969e-06 3.468218e-01
## VIOLENT CRIME 3.910283e-03 6.590162e-03 3.000984e-06 1.330666e-01
## WEAPONS VIOLATION 2.970974e-04 1.223401e-03 0.000000e+00 2.318560e-02
## Sum 2.997283e-02 5.060860e-02 3.401116e-05 1.000000e+00
chicago_crime_subset %>%
count(district, arrest, primary_type) %>%
group_by(district, primary_type) %>%
filter(district == "18") %>%
filter(primary_type == "WEAPONS VIOLATION") %>%
mutate(proporcion = prop.table(n))
## # A tibble: 2 x 5
## # Groups: district, primary_type [1]
## district arrest primary_type n proporcion
## <fct> <fct> <fct> <int> <dbl>
## 1 18 FALSE WEAPONS VIOLATION 52 0.224
## 2 18 TRUE WEAPONS VIOLATION 180 0.776
chicago_crime_subset %>%
count(district, arrest, primary_type) %>%
group_by(district, primary_type) %>%
filter(district == "8") %>%
filter(primary_type == "WEAPONS VIOLATION") %>%
mutate(proporcion = prop.table(n))
## # A tibble: 2 x 5
## # Groups: district, primary_type [1]
## district arrest primary_type n proporcion
## <fct> <fct> <fct> <int> <dbl>
## 1 8 FALSE WEAPONS VIOLATION 394 0.325
## 2 8 TRUE WEAPONS VIOLATION 817 0.675
La probabilidad de que sea un crimen de armas en un distrito rico como el 18 (Near-north side) es de un 0.02%, una tasa bajísima si lo comparamos con la probabilidad de que se de en un distrito del sur como puede ser el 8, que tiene una probabilida de un 0.1% una probabilidad 5 veces mayor. Por otra parte, se ve que los crimenes mas violentos en los distritos mas acomodados están mas controlados, teniendo en cuenta que la tasa de arrestos en el 18 es un 10% mayor.
print("Independencia de Crimenes y Arrestos")
## [1] "Independencia de Crimenes y Arrestos"
chisq.test(chicago_crime_subset$primary_type,chicago_crime_subset$arrest)
##
## Pearson's Chi-squared test
##
## data: chicago_crime_subset$primary_type and chicago_crime_subset$arrest
## X-squared = 377087, df = 7, p-value < 2.2e-16
print("Independencia de Distritos y Arrestos")
## [1] "Independencia de Distritos y Arrestos"
chisq.test(chicago_crime_subset$district,chicago_crime_subset$arrest)
##
## Pearson's Chi-squared test
##
## data: chicago_crime_subset$district and chicago_crime_subset$arrest
## X-squared = 35773, df = 22, p-value < 2.2e-16
print("Independencia de Crimenes y Distritos")
## [1] "Independencia de Crimenes y Distritos"
chisq.test(chicago_crime_subset$primary_type,chicago_crime_subset$district)
## Warning in chisq.test(chicago_crime_subset$primary_type,
## chicago_crime_subset$district): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: chicago_crime_subset$primary_type and chicago_crime_subset$district
## X-squared = 152958, df = 154, p-value < 2.2e-16
print("Independencia de Crimenes y Meses")
## [1] "Independencia de Crimenes y Meses"
chisq.test(chicago_crime_subset$primary_type,chicago_crime_subset$month)
##
## Pearson's Chi-squared test
##
## data: chicago_crime_subset$primary_type and chicago_crime_subset$month
## X-squared = 4664.9, df = 77, p-value < 2.2e-16
print("Independencia de Arrestos y Meses")
## [1] "Independencia de Arrestos y Meses"
chisq.test(chicago_crime_subset$arrest,chicago_crime_subset$month)
##
## Pearson's Chi-squared test
##
## data: chicago_crime_subset$arrest and chicago_crime_subset$month
## X-squared = 1836.5, df = 11, p-value < 2.2e-16
print("Independencia de Distritos y Meses")
## [1] "Independencia de Distritos y Meses"
chisq.test(chicago_crime_subset$district,chicago_crime_subset$month)
## Warning in chisq.test(chicago_crime_subset$district,
## chicago_crime_subset$month): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: chicago_crime_subset$district and chicago_crime_subset$month
## X-squared = 1429.7, df = 242, p-value < 2.2e-16
El pValor es muy pequeño por lo que se rechaza que los factores son independientes (hipotesis nula). Por ello, considero que la dependencia de los crimenes con los distritos y los arrestos son completamente dependientes y esa relacion debe ser estudiada para hallar posibles soluciones.
En esta seccion se va a mostrar como estan relacionados los crimenes con los arrestos y los distritos. Esto sirve de apoyo para confirmar las teorías anteriormente expuestas de una forma gráfica.
En estos primeros gráficos se ven esas relaciones por separado.
ggplot(data = chicago_crime_subset) +
geom_count(mapping = aes(x = primary_type, y = district)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
ggplot(data = chicago_crime_subset) +
geom_count(mapping = aes(x = arrest, y = primary_type)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
ggplot(data = chicago_crime_subset) +
geom_count(mapping = aes(x = arrest, y = district)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
En estos diagramas se ve la incidencia de las relaciones que se llevan estudiando durante el análisis completo.
En el primero se ve como los robos sin violencia es el crimen mas común en la ciudad, en general. Mientras, otrr crimen no violento como fraude, destaca en los distritos mas ricos como el 1, 18 y 19. Los delitos mas violentos como drogas, daños o armas estan bastante focalizados en el sur y el oeste (Sobre todo las drogas)
En cuanto a arrestos y crímenes, se ve que en los crimenes no violentos, la diferencia de arrestos y no arrestos es considerable. Lo mismo pasa con delitos mas violentos pero en menor medida, como los asaltos y los crimenes violentos. Como hemos visto a lo largo del documento, las drogas y las armas tienen una tasa de arresto mucho mayor que el resto.
Por último, solo en los distritos 11 y 15 la tasa de arrestos es positiva, coincidiendo con los mas afectados por drogas y armas, respectivamente.
Ahora, muestro en el mismo gráfico esas relaciones con la probabilidad de arresto en cada caso. Cuanto mas turquesa, mas probabilidad de que se produzca un arresto.
ggplot(data = chicago_crime_subset, aes(x=primary_type, y=district, fill=arrest)) +
geom_tile() +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
# Correlacion
ggplot(chicago_crime_subset,aes(x=district,y=primary_type,color=arrest))+geom_point(alpha=0.5)
En estos graficos podemos ver con mas claridad las relaciones anteriores.
Analizando crimen a crimen voy a exponer ahora mis conclusiones finales basados en todo el analisis.
ASALTO: Este crimen es el que mas duda me genera, pero haciendo un analisis particular espero aclarar esas dudas a continuación. Parece extraño ya que el crimen esta repartido bastante equitativamente entre los distritos del sur (pobres) y los mas ricos (1, 18, 19, 24), algo muy extraño como vemos en el resto de crimenes excepto (en menor medida) en crimenes violentos, que pasa algo similar.
CRIMENES DE DAÑOS: Este crimen esta repartido mayoritariamente en distritos del sur y oeste y en casi todos los distritos exceptuando el 2 y 5 tiene una tasa de arrestos muy baja.
FRAUDE: Uno de los crimenes junto a robos sin violencia que se situan mayoritariamente en barrios ricos, donde la tasa de arrestos es considerablemente baja.
DROGAS: El crimen donde el análisis es mas fructífero. Practicamente la totalidad de crimenes de este tipo se dan en los distritos 10, 11 y 15, situados al oeste de la ciudad. Además es, con mucha diferencia el crimen que mas controlado tiene la policia, arrestando a mas del 90% de criminales de este tipo.
ROBOS CON VIOLENCIA: Gracias a este último gráfico, nos damos cuenta que este crimen tiene una tasa bastante positiva de arrestos, algo que anteriormente se me habia pasado por alto. Como la mayoría de crimenes violentos, esta repartido mayoritariamente en el sur de la ciudad y el oeste.
ROBOS SIN VIOLENCIA: Al no ser un crimen violento, esta localizado en el centro y norte de la ciudad, las “zonas seguras”. Además, la tasa de arrestos es ridicula para ser el crimen mas extendido de la ciudad.
CRIMENES VIOLENTOS: Este es otro crimen, como los robos con violencia, donde la tasa de arrestos es algo superior a lo que pensaba, sobretodo teniendo en cuenta que ocurre en ditritos del norte como el 19 y el 22, distritos favorecidos economicamente y tradicionalmente con una tasa muy baja de arrestos.
ARMAS: Como los crímenes de drogas, el otro crimen que mas facilmente podemos clasificar. Un crimen exclusivamente del sur de la ciudad y con una tasa de arrestos mucho mayor que la media.
La primera conclusion que saco es la diferencia de arrestos respecto a crimenes violentos y crímenes menos violentos. La tasa de arrestos de los robos con violencia, drogas, armas e incluso crimenes violentos de por si, es mucho mayor a robos sin violencia y fraude.
Puedo localizar casi inequívocamente tanto los crimenes de drogas (Distritos 10 y 11), armas (Distritos del sur y el 11), fraude (1 (Centro de la ciudad), 18 y 19) y robo sin violencia (1, 18 y 19).
Los crímenes violentos siguen, geográficamente hablando, a las dificultades económicas. Tradicionalmente las zonas pobres de Chicago son el sur (La serie de television “Shameless” lo ejemplifica bastante bien) y el oeste, siendo estos los barrios tradicionalmente latinos. Como se ve claramente a lo largo de este análisis, los crimenes mas violentos se situan en estas zonas.
Los crímenes menos violentos se producen en las zonas mas acomodadas, donde las autoridades están mejor financiadas y tratan de contener mejor los crímenes mas violentos.
El fraude se produce, lógicamente, en los distritos financieros de la ciudad que son el 1 (Popularmente llamado “Loop”), 18 y 19, donde se situan tanto los mas ricos de la ciudad como la totalidad de grandes empresas.
Hay una teoría muy arraigada en la ciudad de Chicago que dice que la violencia sube del sur al norte a través de la Red Line del CTA, el transporte público de Chicago. Esta teoría es bastante real, como se puede ver en los siguientes artículos: https://www.chicagotribune.com/investigations/ct-cta-l-crime-up-arrests-down-20190919-lu2n2mc2i5akhdrhatuexp72oy-story.html y https://www.chicagotribune.com/business/transportation/ct-biz-cta-crime-spike-new-patrols-20200110-6nihubfvsjgalf337xqxbme3bq-story.html
Voy a intentar ver si esta teoría puede explicar el comportamiento extraño en los crímenes de asalto y, en menor medida los crimenes violentos.
Lo primero es situar los crímenes de asaltos y crímenes violentos en el mapa.
assault <- na.omit(assault)
setDT(assault)
## MAKE CONTOUR LINES
## Assault
kde_assault <- bkde2D(assault[ , list(longitude, latitude)],
bandwidth=c(.0001, .0001), gridsize = c(75,75))
## Warning in bkde2D(assault[, list(longitude, latitude)], bandwidth = c(1e-04, :
## Binning grid too coarse for current (small) bandwidth: consider increasing
## 'gridsize'
CL_assault <- contourLines(kde_assault$x1 , kde_assault$x2 , kde_assault$fhat)
## EXTRACT CONTOUR LINE LEVELS
LEVS_assault<- as.factor(sapply(CL_assault, `[[`, "level"))
NLEV_assault <- length(levels(LEVS_assault))
## CONVERT CONTOUR LINES TO POLYGONS
pgons_assault <- lapply(1:length(CL_assault), function(i)
Polygons(list(Polygon(cbind(CL_assault[[i]]$x, CL_assault[[i]]$y))), ID=i))
spgons_assault = SpatialPolygons(pgons_assault)
## Violent Crimes
setDT(violent_crime)
kde_vc <- bkde2D(violent_crime[ , list(longitude, latitude)],
bandwidth=c(.0001, .0001), gridsize = c(75,75))
## Warning in bkde2D(violent_crime[, list(longitude, latitude)], bandwidth =
## c(1e-04, : Binning grid too coarse for current (small) bandwidth: consider
## increasing 'gridsize'
CL_vc <- contourLines(kde_vc$x1 , kde_vc$x2 , kde_vc$fhat)
## EXTRACT CONTOUR LINE LEVELS
LEVS_vc<- as.factor(sapply(CL_vc, `[[`, "level"))
NLEV_vc <- length(levels(LEVS_vc))
## CONVERT CONTOUR LINES TO POLYGONS
pgons_vc <- lapply(1:length(CL_vc), function(i)
Polygons(list(Polygon(cbind(CL_vc[[i]]$x, CL_vc[[i]]$y))), ID=i))
spgons_vc = SpatialPolygons(pgons_vc)
leaflet() %>% addTiles() %>%
addPolygons(data = spgons_vc, color = brewer.pal(NLEV_vc, name = "RdPu")[LEVS_vc], group = "Violent Crimes") %>%
addPolygons(data = spgons_assault, color = brewer.pal(NLEV_assault, name = "YlOrRd")[LEVS_assault], group = "Assault") %>%
addLayersControl(overlayGroups = c("Assault", "Violent Crimes"),options = layersControlOptions(collapsed = FALSE))
## Warning in brewer.pal(NLEV_vc, name = "RdPu"): n too large, allowed maximum for palette RdPu is 9
## Returning the palette you asked for with that many colors
En los mapas se ven claramente como estos crimenes se reparten en una linea mas o menos vertical cuasi paralela a la costa.
Ahora vamos a situar en el mapa los crimenes que ocurren en plataformas de metro (CTA PLATFORM) y la linea roja de metro, que es la que queremos estudiar. Los datos de las localizaciones de las plataformas las sacamos de: https://data.cityofchicago.org/Transportation/CTA-System-Information-List-of-L-Stops/8pix-ypme
## Lo primero es situar los cmimenes en el metro en un mapa
## Ahora leo el dataset de las localizaciones de las paradas y selecciono las correspondientes a la línea roja, que es la que va de norte a sur.
cta_locations <- read.csv(file = "Datos/CTA_Stops.csv", #Name of text file.
sep = ",", #Separation character.
header = TRUE, #If column names are in the first row.
na.strings = "NA", #Character to be marked as missing value.
stringsAsFactors = FALSE)
cta_locations <- cta_locations %>% tidyr::extract(Location, c("Latitude", "Longitude"), "\\(([^,]+), ([^)]+)\\)")
cta_locations$Latitude <- as.numeric(cta_locations$Latitude)
cta_locations$Longitude <- as.numeric(cta_locations$Longitude)
red_line <- subset(cta_locations, RED == "true")
red_line$Latitude <- as.numeric(red_line$Latitude)
red_line$Longitude <- as.numeric(red_line$Longitude)
setDT(red_line)
leaflet()%>%
addTiles() %>%
addPolygons(data = spgons_assault, color = brewer.pal(NLEV_assault, name = "YlOrRd")[LEVS_assault], group = "Assault") %>%
addPolygons(data = spgons_vc, color = brewer.pal(NLEV_vc, name = "YlGn")[LEVS_vc], group = "Violent Crimes") %>%
addCircles(data = red_line, color = brewer.pal(2, name = "YlOrRd")[3], group = "Red Line") %>%
addCircles(data = cta_locations, color = brewer.pal(2, name = "RdPu")[3], group = "All Lines") %>%
addLayersControl(overlayGroups = c("Assault","Violent Crimes", "All Lines","Red Line"),options = layersControlOptions(collapsed = FALSE))
## Warning in brewer.pal(NLEV_vc, name = "YlGn"): n too large, allowed maximum for palette YlGn is 9
## Returning the palette you asked for with that many colors
## Warning in brewer.pal(2, name = "YlOrRd"): minimal value for n is 3, returning requested palette with 3 different levels
## Assuming "Longitude" and "Latitude" are longitude and latitude, respectively
## Warning in brewer.pal(2, name = "RdPu"): minimal value for n is 3, returning requested palette with 3 different levels
## Assuming "Longitude" and "Latitude" are longitude and latitude, respectively
Como se ve comparando las diferentes opciones del mapa, la línea roja del CTA es donde mas crímenes hay. Se comprueba además que esta línea atraviesa la ciudad de sur a norte y viceversa, de la zona mas pobre a la mas rica, por lo que tiene bastante sentido que la violencia y criminalidad avance en esa dirección. Esta explicación podría servir como razón para explicar porque razón no se ha podido sacar un análisis mas preciso de lo que ocurre con los asaltos y, en menor medida, los crimenes violentos.
district11 = chicago_crime_subset %>%
filter(district==11)
(modelo11 = lm(primary_type ~ arrest, data=district11))
## Warning in model.response(mf, "numeric"): using type = "numeric" with a factor
## response will be ignored
## Warning in Ops.factor(y, z$residuals): '-' not meaningful for factors
##
## Call:
## lm(formula = primary_type ~ arrest, data = district11)
##
## Coefficients:
## (Intercept) arrestTRUE
## 4.7871 -0.3381
district8 = chicago_crime_subset %>%
filter(district==8)
(modelo8 = lm(primary_type ~ arrest, data=district8))
## Warning in model.response(mf, "numeric"): using type = "numeric" with a factor
## response will be ignored
## Warning in model.response(mf, "numeric"): '-' not meaningful for factors
##
## Call:
## lm(formula = primary_type ~ arrest, data = district8)
##
## Coefficients:
## (Intercept) arrestTRUE
## 4.5688 0.3546
district1 = chicago_crime_subset %>%
filter(district==1)
(modelo1 = lm(primary_type ~ arrest, data=district1))
## Warning in model.response(mf, "numeric"): using type = "numeric" with a factor
## response will be ignored
## Warning in model.response(mf, "numeric"): '-' not meaningful for factors
##
## Call:
## lm(formula = primary_type ~ arrest, data = district1)
##
## Coefficients:
## (Intercept) arrestTRUE
## 5.0357 0.2391
plot(x = chicago_crime_subset$primary_type, y=chicago_crime_subset$arrest)
abline(modelo11, col="green")
abline(modelo8, col="red")
abline(modelo1, col="blue")
(modelo11_log = glm(primary_type ~ arrest, data = district11, family = binomial(link=logit)))
##
## Call: glm(formula = primary_type ~ arrest, family = binomial(link = logit),
## data = district11)
##
## Coefficients:
## (Intercept) arrestTRUE
## 2.275 1.224
##
## Degrees of Freedom: 67121 Total (i.e. Null); 67120 Residual
## Null Deviance: 32760
## Residual Deviance: 31580 AIC: 31580
(modelo8_log = glm(primary_type ~ arrest, data = district8, family = binomial(link=logit)))
##
## Call: glm(formula = primary_type ~ arrest, family = binomial(link = logit),
## data = district8)
##
## Coefficients:
## (Intercept) arrestTRUE
## 2.5709 -0.1743
##
## Degrees of Freedom: 61965 Total (i.e. Null); 61964 Residual
## Null Deviance: 32420
## Residual Deviance: 32400 AIC: 32400
(modelo1_log = glm(primary_type ~ arrest, data = district1, family = binomial(link=logit)))
##
## Call: glm(formula = primary_type ~ arrest, family = binomial(link = logit),
## data = district1)
##
## Coefficients:
## (Intercept) arrestTRUE
## 3.0176 -0.3162
##
## Degrees of Freedom: 64239 Total (i.e. Null); 64238 Residual
## Null Deviance: 25320
## Residual Deviance: 25270 AIC: 25280
Como se ve en los tres diferentes modelos, tanto el modelo lineal como el logístico confirman las teorias que he ido proponiendo a lo largo del análisis. El distrito 11 tiene una probabilidad de arresto mucho mayor que los del sur y los del centro, siendo la tasa de los del sur algo mayor a la del centro y norte de la ciudad, hecho que se ve claramente en los modelos logísiticos. Esto, según se ha demostrado anteriormente, se debe a la distribución de crímenes en cada distrito.
arrest_true = chicago_crime_subset %>%
filter(arrest=="TRUE")
(modelo_true = lm(primary_type ~ district, data=arrest_true))
## Warning in model.response(mf, "numeric"): using type = "numeric" with a factor
## response will be ignored
## Warning in Ops.factor(y, z$residuals): '-' not meaningful for factors
##
## Call:
## lm(formula = primary_type ~ district, data = arrest_true)
##
## Coefficients:
## (Intercept) district2 district3 district4 district5 district6
## 5.27475 -0.17777 -0.25856 -0.34727 -0.16122 -0.19132
## district7 district8 district9 district10 district11 district12
## -0.29937 -0.35136 -0.38009 -0.50527 -0.82576 -0.22196
## district14 district15 district16 district17 district18 district19
## -0.28527 -0.67241 -0.46962 -0.16305 0.02932 -0.14277
## district20 district22 district24 district25 district31
## -0.21535 -0.22647 -0.28878 -0.29990 -2.14141
arrest_false = chicago_crime_subset %>%
filter(arrest=="FALSE")
(modelo_false = lm(primary_type ~ district, data=arrest_false))
## Warning in model.response(mf, "numeric"): using type = "numeric" with a factor
## response will be ignored
## Warning in model.response(mf, "numeric"): '-' not meaningful for factors
##
## Call:
## lm(formula = primary_type ~ district, data = arrest_false)
##
## Coefficients:
## (Intercept) district2 district3 district4 district5 district6
## 5.03568 -0.36080 -0.45366 -0.46739 -0.47861 -0.40741
## district7 district8 district9 district10 district11 district12
## -0.35783 -0.46691 -0.38472 -0.31090 -0.24861 -0.20461
## district14 district15 district16 district17 district18 district19
## -0.12060 -0.28095 -0.46235 -0.28403 0.03044 -0.11605
## district20 district22 district24 district25 district31
## -0.28851 -0.46654 -0.33943 -0.38210 -0.93042
plot(x = chicago_crime_subset$primary_type, y=chicago_crime_subset$district)
abline(arrest_true, col="green")
abline(arrest_false, col="red")
(modelo_true_log = glm(primary_type ~ district, data = arrest_true, family = binomial(link=logit)))
##
## Call: glm(formula = primary_type ~ district, family = binomial(link = logit),
## data = arrest_true)
##
## Coefficients:
## (Intercept) district2 district3 district4 district5 district6
## 2.70142 -0.17761 -0.48780 -0.47378 -0.35648 -0.24788
## district7 district8 district9 district10 district11 district12
## -0.17135 -0.30480 -0.22733 0.36602 0.79794 -0.18192
## district14 district15 district16 district17 district18 district19
## -0.41708 0.26395 -0.28650 -0.13914 0.21153 -0.25735
## district20 district22 district24 district25 district31
## -0.38696 -0.19479 -0.30279 -0.04612 -0.06236
##
## Degrees of Freedom: 205745 Total (i.e. Null); 205723 Residual
## Null Deviance: 101700
## Residual Deviance: 100100 AIC: 100100
(modelo_false_log = glm(primary_type ~ district, data = arrest_false, family = binomial(link=logit)))
##
## Call: glm(formula = primary_type ~ district, family = binomial(link = logit),
## data = arrest_false)
##
## Coefficients:
## (Intercept) district2 district3 district4 district5 district6
## 3.01760 -0.63132 -0.73018 -0.77003 -0.76575 -0.69870
## district7 district8 district9 district10 district11 district12
## -0.84802 -0.44668 -0.61509 -0.70344 -0.74220 -0.30470
## district14 district15 district16 district17 district18 district19
## -0.08478 -0.69311 -0.37821 -0.21208 0.25024 0.09734
## district20 district22 district24 district25 district31
## -0.34251 -0.49946 -0.34712 -0.53686 -0.12723
##
## Degrees of Freedom: 793925 Total (i.e. Null); 793903 Residual
## Null Deviance: 412700
## Residual Deviance: 407800 AIC: 407900
Analizando el modelo lineal comparando los distritos y los tipos de crimen, no se puede extraer ninguna conclusión. Sin embargo, analizando el modelo logísitico, se ve claramente que los distrito con los arrestos mas probables son los mas afectados por drogas y armas, el 10,11 y 15.
La hago aqui porque hay que hacer transformaciones de variables que solo afectan a este apartado
chicago_crime_subset$primary_type <- as.factor(chicago_crime_subset$primary_type)
chicago_crime_subset$primary_type <- as.numeric(chicago_crime_subset$primary_type)
chicago_crime_subset$district <- as.numeric(chicago_crime_subset$district)
chicago_crime_subset$month <- as.numeric(chicago_crime_subset$month)
qqnorm(chicago_crime_subset$district)
qqline(chicago_crime_subset$district)
qqnorm(chicago_crime_subset$primary_type)
qqline(chicago_crime_subset$primary_type)
qqnorm(chicago_crime_subset$month)
qqline(chicago_crime_subset$month)
Ninguna de las variables se podría considerar como normal